💡 AI 인사이트

🤖 AI가 여기에 결과를 출력합니다...

댓글 커뮤니티

쿠팡이벤트

이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다.

검색

    로딩 중이에요... 🐣

    [코담] 웹개발·실전 프로젝트·AI까지, 파이썬·장고의 모든것을 담아낸 강의와 개발 노트

    05 Django 폼(Form) 기초 개념과 예제 | ✅ 편저: 코담 운영자

    5강 - Django 폼(Form) 기초 개념과 예제

    폼 이란?


    ✨ 이번 강의 목표

    • Django 폼(Form)의 필요성과 개념 이해
    • HTML <form>과의 차이점 파악
    • Django forms.Form 사용 흐름 익히기
    • 실제 예제와 함께 핵심 기능 설명

    📄 1. Django 폼이란?

    Django 폼은 사용자로부터 입력 받은 데이터를 안전하고 편리하게 처리할 수 있도록 도와주는 기능입니다. HTML의 <form> 태그만 사용할 경우 입력 유효성 검사, 보안 처리 등을 직접 구현해야 하지만, Django의 Form 클래스를 사용하면 이 과정을 자동화할 수 있습니다.

    ✅ HTML 폼과의 차이점

    항목 HTML Form Django Form
    유효성 검사 수동 구현 필요 is_valid()로 자동 처리
    보안 CSRF 수동 처리 필요 {% csrf_token %} + 내장 지원
    유지보수 HTML 구조 변경 시 반복 수정 Python 코드로 관리, 재사용성 높음
    에러 메시지 직접 조건 분기 및 출력 필요 .errors 속성으로 자동 렌더링 가능

    Django Form은 HTML 입력 처리의 번거로움을 덜고, 재사용성과 보안성을 높여주는 강력한 도구입니다.


    🚀 2. 왜 Django 폼이 필요한가?

    • 다양한 입력 타입의 검증이 자동화됨
    • 클라이언트/서버 양쪽의 유효성 검사를 간결하게 구현 가능
    • 코드 중복 없이 동일한 폼 로직을 여러 뷰에서 재사용 가능
    • CSRF 보안 처리가 기본 탑재되어 있음

    🧱 3. Django Form 사용 흐름

    3.1 forms.py - 폼 클래스 생성

    from django import forms
    
    class NameForm(forms.Form):
        name = forms.CharField(label='이름', max_length=100)
    
    • CharField: <input type="text">와 동일
    • label: 템플릿에서 표시될 폼 필드 라벨명

    3.2 views.py - 폼 처리 로직 작성

    from django.shortcuts import render
    from .forms import NameForm
    
    def name_view(request):
        if request.method == "POST":
            form = NameForm(request.POST)
            if form.is_valid():
                name = form.cleaned_data["name"]
                return render(request, "thanks.html", {"name": name})
        else:
            form = NameForm()
        return render(request, "name_form.html", {"form": form})
    
    • is_valid(): 폼 입력 값의 유효성 검사
    • cleaned_data: 검증 통과한 데이터 접근

    3.3 name_form.html - 템플릿에서 폼 렌더링

    <form method="post">
      {% csrf_token %}
      {{ form.as_p }}
      <button type="submit">제출</button>
    </form>
    
    • form.as_p: 각 필드를 <p> 태그로 감싸 렌더링
    • {% csrf_token %}: 보안 필수 처리

    에러 메시지를 커스터마이징하거나 개별 필드를 제어하려면 반복문을 활용합니다:

    {% for field in form %}
      <div>
        {{ field.label_tag }}<br>
        {{ field }}<br>
        {{ field.errors }}
      </div>
    {% endfor %}
    

    🛠️ 4. Django Form 핵심 메서드 요약

    메서드 / 속성 설명
    is_valid() 데이터 유효성 검사. True/False 반환
    cleaned_data['name'] 통과된 데이터 접근
    form.errors 필드별 에러 메시지 출력
    add_error(field, msg) 특정 필드에 수동 에러 추가

    ✅ 5. Django 폼의 장점 요약

    • ✅ 코드 간결화: HTML 및 서버 처리 코드 통합 가능
    • ✅ 보안 강화: CSRF 보호 및 에러 처리 기본 제공
    • ✅ 유지보수 용이: 변경 시 Python 코드만 수정하면 됨
    • ✅ 재사용성: 여러 뷰, 여러 폼에서 중복 없이 사용 가능

    🧾 정리

    • Django 폼은 사용자 입력 데이터를 구조적으로 받고, 유효성 검사와 에러 처리, 보안까지 통합적으로 관리할 수 있는 시스템입니다.
    • forms.py → views.py → template.html 구조를 기억하세요.
    • form.is_valid()form.cleaned_data는 폼 사용의 핵심입니다.

    📌 다음 강의에서는 ModelForm을 사용한 회원가입 기능을 구현해보겠습니다.

    TOP
    preload preload